Submission #5926710


Source Code Expand

Copy
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<utility>
#include<set>
#include<stack>
#include<list>
#include<deque>
#include<bitset>
#include<iomanip>
#include<cstring>
#include<sstream>
#include<cstdio>
#include<cstdlib>
#include<climits>
#include<cmath>
#include<cctype>


#define pb push_back
#define mp make_pair
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define ren(i,a,b) for(int i=a;i>=b;i--)
#define ff first
#define ss second
#define pll pair<long long int,long long int>
#define pii pair<int,int>
#define vll vector<long long int>
#define vii vector<int>
#define gi(n) scanf("%d",&n)
#define gll(n) scanf("%lld",&n)
#define gstr(n) scanf("%s",n)
#define gl(n) cin >> n
#define oi(n) printf("%d",n)
#define oll(n) printf("%lld",n)
#define ostr(n) printf("%s",n)
#define ol(n) cout << n
#define os cout<<" "
#define on cout<<"\n"
#define o2(a,b) cout<<a<<" "<<b
#define all(n) n.begin(),n.end()
#define present(s,x) (s.find(x) != s.end())
#define cpresent(s,x) (find(all(s),x) != s.end())
#define tr(container, it) for(__typeof(container.begin()) it = container.begin(); it != container.end(); it++)
using namespace std;

typedef unsigned long long int ull;
typedef long long int ll;
typedef long double ld;
typedef vector<vector<ll> > mat;

int a[100005];

vii c,nc;
vector<pii> v;

int main()
{ios_base::sync_with_stdio(false);
int n;
cin>>n;
rep(i,0,n-1)cin>>a[i];
sort(a,a+n);

c.pb(a[0]);

rep(i,1,n-2)
{
	if(a[i]>0)nc.pb(a[i]);
	else c.pb(a[i]);
}
nc.pb(a[n-1]);

int szc=c.size(),szn=nc.size();

int mn=min(c.size(),nc.size());

int ans=0;

if(szc>=szn)
{
	ans=nc[0]-c[0];
	v.pb(mp(nc[0],c[0]));
}
else
{
	ans=c[0]-nc[0];
	v.pb(mp(c[0],nc[0]));
}

rep(i,1,mn-1)
{
	v.pb(mp(c[i],ans));
	ans=c[i]-ans;
	if(i==mn-1&&szc<szn)
	{
		v.pb(mp(ans,nc[i]));
		ans=ans-nc[i];
	}
	else
	{
		v.pb(mp(nc[i],ans));
		ans=nc[i]-ans;
	}
}

if(szc>=szn)
{
	rep(i,mn,szc-1)
	{
		v.pb(mp(ans,c[i]));
		ans-=c[i];
	}
}
else
{
	rep(i,mn,szn-2)
	{
		v.pb(mp(ans,nc[i]));
		ans-=nc[i];
	}
	v.pb(mp(nc[szn-1],ans));
	ans=nc[szn-1]-ans;
}
ol(ans);on;
tr(v,it)
{
	o2(it->ff,it->ss);on;
}

return 0;
}

Submission Info

Submission Time
Task C - Successive Subtraction
User abisheka
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2272 Byte
Status WA
Exec Time 34 ms
Memory 3828 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 500
Status
AC × 2
AC × 21
WA × 5
Set Name Test Cases
Sample s1.txt, s2.txt
All 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, s1.txt, s2.txt
Case Name Status Exec Time Memory
01.txt AC 3 ms 512 KB
02.txt AC 3 ms 512 KB
03.txt AC 3 ms 512 KB
04.txt WA 3 ms 512 KB
05.txt AC 3 ms 512 KB
06.txt WA 32 ms 3448 KB
07.txt WA 32 ms 3448 KB
08.txt WA 32 ms 3316 KB
09.txt WA 30 ms 3188 KB
10.txt AC 33 ms 3452 KB
11.txt AC 33 ms 3828 KB
12.txt AC 33 ms 3508 KB
13.txt AC 30 ms 3316 KB
14.txt AC 33 ms 3444 KB
15.txt AC 32 ms 3444 KB
16.txt AC 29 ms 3252 KB
17.txt AC 34 ms 3444 KB
18.txt AC 32 ms 3444 KB
19.txt AC 32 ms 3444 KB
20.txt AC 33 ms 3444 KB
21.txt AC 33 ms 3444 KB
22.txt AC 29 ms 3572 KB
23.txt AC 29 ms 3572 KB
24.txt AC 1 ms 256 KB
s1.txt AC 1 ms 256 KB
s2.txt AC 1 ms 256 KB