#include #include #include #include #include using namespace std; using ll=long long; priority_queue > que; int min_u(int&m, int v) { if(m==-1 || m>v) { m=v; return 1; } return 0; } void push(int t, int ct) { if(t<=0) return; que.push(make_pair(-t, ct)); } int pop(int& t, int& ct) { if(que.empty()) return 0; t=-que.top().first; ct=que.top().second; que.pop(); return 1; } void que_dump(void) { auto q=que; printf("dump\n"); for(;!q.empty();) { printf("t=%d ct=%d\n", -q.top().first, q.top().second); q.pop(); } printf("\n"); } ll solve(int n, int t) { ll ans=n; ll inc=n*2; int ct=0, nt, nc; while(pop(nt, nc)) { if(nt>t) break; ans+=inc*(nt-ct); inc--; if(nc) ans--; ct=nt; } ans+=inc*(t-ct); while(pop(nt, nc)); return ans; } int main(void) { vector x; int n, d, t; int i, j, y, ay, c, cp_min, cp_min_t=0, cn_min; while(scanf("%d%d%d", &n ,&d, &t)==3) { x.resize(n); for(i=0;i0;i--) { if(x[i]==x[i-1]) x.erase(x.begin()+i); } n=x.size(); for(i=0;i