60 pts(TLE + hack 1 WA)怎么优化 + 改错?
查看原帖
60 pts(TLE + hack 1 WA)怎么优化 + 改错?
814343
bc2_cryeggy楼主2023/7/8 11:08

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define qwq ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
const int N = 100010;

namespace ioarray
{
	auto read = [](int n, int *a)
	{
		for (int i = 1; i <= n; ++ i)
    		cin >> a[i];
	};
	void print(int n, int *a, string s)
	{
		for (int i = 1; i <= n; ++ i)
		{
			cout << a[i];
			cout << s;
		}
		cout << endl;
	}
}
using namespace ioarray;
int n, s[N], a[N];
bool vis[N];

struct node
{
    int val = 0;
    int idx = 0;
};
node ans;

signed main()
{
    qwq;
	cin >> n;
    read(n, s);
    read(n, a);
    for (int i = 1; i <= n; ++ i)
    {
        if (s[i] * 2 + a[i] > ans.val)
        	ans.val = s[i] * 2 + a[i], ans.idx = i;
    }
    cout << ans.val << endl;
    vis[ans.idx] = 1;
    for (int i = 2; i <= n; ++ i)
    {
        node mini;
        mini.val = -1;
        for (int j = 1; j <= n; ++ j)
        {
//            cout << vis[j] << " ";
            if (!vis[j])
                if (a[j] > mini.val)
                    mini.val = a[j], mini.idx = j;
        }
        vis[mini.idx] = 1;
        ans.val += mini.val;
//        cout << "|" <<  mini.val << " " << mini.idx << endl;
        if (ans.idx < mini.idx)
            ans.val += 2 * (mini.idx - ans.idx);
        cout << ans.val << endl;
    }
    return 0;
}
2023/7/8 11:08
加载中...