Submission #1212943

#TimeUsernameProblemLanguageResultExecution timeMemory
1212943Rawlat_vanakRotating Lines (APIO25_rotate)C++20
0 / 100
179 ms13540 KiB
#include "rotate.h" #include <bits/stdc++.h> using namespace std; //#define int long long #define speedIO ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); //#define mod 1000000007 #define f first #define s second #define pii pair<int,int> #define pb push_back const int M=50000; vector<int> final; void energy(int n, vector<int> v){ set<pii> a; map<pii,int> b; vector<pii> tmp(n); for(int i=0;i<n;i++){ a.insert({v[i],i}); tmp[i]={v[i],i}; } sort(tmp.begin(),tmp.end()); for(int i=0;i<n;i++){ b[{tmp[i].f,tmp[i].s}]=i; //cout<<tmp[i].f<<' '<<tmp[i].s<<'\n'; } vector<bool> marked(n,false); int idx=0; while(idx<n and !a.empty()){ if(marked[idx]){ //cout<<"hi\n"; idx++; continue; } if(tmp[idx].f<M/2){ auto it=a.upper_bound({tmp[idx].f+M/2,1e9}); // atmost v[i]+90 it--; pii sigh=*it; //cout<<sigh.s<<" plsplsplswork\n"; if(b[sigh]-idx>=(n)/2){ //cout<<"piuhperihgveirjv\n"; vector<int> wow={tmp[idx].s}; rotate(wow,tmp[b[sigh]].f+M/2-tmp[idx].f); a.erase({tmp[idx].f,tmp[idx].s}); a.insert({tmp[b[sigh]].f+M/2,tmp[idx].s}); tmp[idx].f=tmp[b[sigh]].f+M/2; marked[b[sigh]]=true; }else{ //cout<<"wpoejfpwepfo\n"; vector<int> wow={tmp[idx].s}; rotate(wow,tmp[(b[sigh]+1)%n].f+M/2-tmp[idx].f); a.erase({tmp[idx].f,tmp[idx].s}); a.insert({tmp[(b[sigh]+1)%n].f+M/2,tmp[idx].s}); tmp[idx].f=tmp[(b[sigh]+1)].f+M/2; marked[(b[sigh]+1)%n]=true; } }else{ auto it=a.lower_bound({tmp[idx].f-M/2,0}); // atleast v[i]+90 pii sigh=*it; if(idx-b[sigh]>=(n)/2){ vector<int> wow={tmp[idx].s}; rotate(wow,tmp[b[sigh]].f+M/2-tmp[idx].f); a.erase({tmp[idx].f,tmp[idx].s}); a.insert({tmp[b[sigh]].f+M/2,tmp[idx].s}); tmp[idx].f=tmp[b[sigh]].f+M/2; marked[b[sigh]]=true; }else{ vector<int> wow={tmp[idx].s}; rotate(wow,tmp[(b[sigh]-1)%n].f+M/2-tmp[idx].f); a.erase({tmp[idx].f,tmp[idx].s}); a.insert({tmp[(b[sigh]-1)%n].f+M/2,tmp[idx].s}); tmp[idx].f=tmp[(b[sigh]-1)].f+M/2; marked[(b[sigh]-1)%n]=true; } } marked[idx]=true; idx++; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...