Submission #1279296

#TimeUsernameProblemLanguageResultExecution timeMemory
1279296PieArmyRope (JOI17_rope)C++20
80 / 100
2605 ms300912 KiB
#include<bits/stdc++.h> typedef long long ll; #define pb push_back #define fr first #define sc second #define endl '\n' using namespace std; #define mid ((left+right)>>1) int n,m; int arr[1000023]; map<int,int>mpt[1000023],mpc[1000023]; int cntc[1000023],cntt[1000023]; multiset<int>tek,cift; int main(){ ios_base::sync_with_stdio(23^23);cin.tie(NULL); cin>>n>>m; for(int i=1;i<=n;i++){ cin>>arr[i]; cntc[arr[i]]++; cntt[arr[i]]++; } for(int i=1;i<=n-1;i+=2){ if(arr[i]==arr[i+1])continue; mpc[arr[i]][arr[i+1]]++; mpc[arr[i+1]][arr[i]]++; } for(int i=2;i<=n-1;i+=2){ if(arr[i]==arr[i+1])continue; mpt[arr[i]][arr[i+1]]++; mpt[arr[i+1]][arr[i]]++; } for(int i=0;i<=m;i++){ tek.insert(cntt[i]); cift.insert(cntc[i]); } for(int i=1;i<=m;i++){ for(auto[a,b]:mpc[i]){ cift.erase(cift.find(cntc[a])); cntc[a]-=b; cift.insert(cntc[a]); } for(auto[a,b]:mpt[i]){ tek.erase(tek.find(cntt[a])); cntt[a]-=b; tek.insert(cntt[a]); } tek.erase(tek.find(cntt[i])); cift.erase(cift.find(cntc[i])); int res=n-cntt[i]-max(*(--tek.end()),*(--cift.end())); tek.insert(cntt[i]); cift.insert(cntc[i]); for(auto[a,b]:mpc[i]){ cift.erase(cift.find(cntc[a])); cntc[a]+=b; cift.insert(cntc[a]); } for(auto[a,b]:mpt[i]){ tek.erase(tek.find(cntt[a])); cntt[a]+=b; tek.insert(cntt[a]); } cout<<res<<endl; } }
#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...